A web application generally refers to a server hosted software application that is accessed via a client resident web browser running over a network such as the Internet. Web application may also refer to such server software application that is coded in browser supported languages, such as HTML, JavaScript, Java, etc., and reliant on the client web browser to render the application executable. Accordingly, web applications may exemplarily include any of web pages, web sites, remotely executable applications and application modules, scripts, objects, applets, interfaces and the like, and any and all other instruction sets or procedures that can be remotely executed on a server through a browser interface at a client in network communication with the server with the results of such execution being returned to the client and rendered at the browser interface.
In a cloud service, which conventionally is a commercially available shared resource service, a single physical machine will be configured to host a plurality of virtual machines. Typically, a provider of the cloud service will have multiple physical machines, each of which hosts respective ones of the plurality of virtual machines.
Generally, any one of the virtual machines may be made available to a network connected client, generally upon presentation and authentication of credentials needed to access the cloud service, such that a connection can be established between the network client and the available virtual machine. Once the connection has been established, the network connected client may launch, run or execute one or more programs on the connected virtual machine at which substantially all I/O operations occur under the control of the network connected client as if such programs were being executed locally.
Additionally, the client, prior to launching and running any application in the cloud service may specify either or both of a particular release version of such application and a particular release version of the operating system upon which such application is to run. Taken together, the application and operating system version are referred to herein as a platform. Upon request by the network connected client for a particular platform, the cloud service determines if such platform currently exists and is otherwise idle, and therefore available for connection with such client.
Should the requested platform be available, the cloud service will accommodate the request and connect the client to the virtual machine having the requested platform. However, in the event no such idle virtual machine having the requested platform is available, then the cloud service will issue a run command to start a new virtual machine with such platform.
Typically, the cloud service may have an image cache of virtual machine images from which an image of such platform can be copied, should an image for such platform already exist. If an image does exist for the specified platform, the image is copied to the physical machine and the new virtual machine is started from such image, as is conventionally known. Once the image is copied and the virtual machine is available for use, the physical machine then sends an indication thereof to the cloud service. The cloud service may then in turn notify the network client of the availability of the virtual machine, thereby allowing connection by the network client to such virtual machine.
However, a significant time delay exists from the time that the cloud service issues the run command to the time the new virtual machine is running and available for connection with the client. This inherent time delay disadvantageously limits the ability of the client to execute a desired application on the virtual machine in real time.
Moreover, if an image of the desired platform does not exist in the image cache, then the cloud service must start a new virtual machine, and once started then configure it for such platform. It should be recognized by those skilled in the art that the time interval from which a request for a specific platform is made until such time a virtual machine is started, configured to have the specified platform, and finally made available to the network client would be unacceptably excessive.
Even when the virtual machine with the desired platform can be started from an image copied from the image cache, the inherent time delay is nonetheless disadvantageous to users who need access to multiple platforms provided by the cloud service in real time. For example, such users may include web application developers who need to verify that their applications will execute properly on any one of the potential platforms that may exist on any one of a variety of clients of various makes and models used to access such applications.
In the above referenced related application, a web application verification system for such developers is disclosed. The disclosed verification system is useful to verify in real time the compatibility of a web application on a test node of a specified platform. Exemplarily, the web application is to be hosted on a server generally accessible to Internet users, each having any one of the variety of network clients as discussed above. To perform the test, the web developer will go through the verification system command test nodes, each of which may be a virtual machine of a respective specified platform in the cloud service, to access the hosted web application and perform various test operations thereat. Results of the test operations may be recorded at each of the test nodes and made available to the web developer through the verification system.
More particularly, the disclosed verification system includes, in addition to the test nodes, a client manager and an expediter. The client manager is operative to manage a session between the verification system and the network client that has connected to the verification system. The expediter is made cognizant of all available test nodes and their respective platforms in the cloud service.
During the session, the developer at the developer client will for each compatibility test to be run specify the desired platform on which test commands selected by the developer are to execute. If a test node having the specified platform is currently available, the expediter will inform the client manager of such availability by giving to the client manager the location of such test node, typically specified by its URL, so that the client manager can connect thereto.
In the event a test node for the specified platform is not currently available when requested, the expediter will endeavor to launch a new test node having such platform. However, in the cloud service as described above, the wait time until such server is launched and becomes available to the client may result in excessive delay, typically on the order of tens of minutes.
To mitigate such delay, the related application discloses therein that the verification system may further include a local server pool, which may be local test nodes configured as either or both of static or virtual machines. In the event the expediter is unable to locate one or more test nodes of the required platform in the cloud service, the expediter will look to the local server pool and make one of its test nodes that matches the required platform available to the client.
In the event the local pool does not currently contain a test node of the requisite platform, the expediter is operative to cause a new test node with such platform to be launched in the local pool and then be made available to the session client, as discussed above. Since a test node in the local server pool can be launched in only several seconds, the wait time until it becomes available to the session client is accordingly minimal, thereby allowing the test to proceed in real time.
As the test node in the local pool is made available, the expediter will also request the cloud service to provide an additional test node matching the platform of the local pool test node currently in use. As soon as the test node in the cloud service becomes available, the expediter, as disclosed in the related application, will direct all further tests to the cloud service test node of the identical platform configuration. Accordingly, as disclosed in the related application, the local pool acts as a short term “burst” server, wherein the virtual machines running in the pool are to be maintained optimally as idle.